import 'dart:io';

import 'package:aliplayer_widget/aliplayer_widget_lib.dart';
import 'package:aliplayer_widget/utils/log_util.dart';
import 'package:get/get.dart';
import 'package:yyshort/common/routers/names.dart';
import 'package:yyshort/common/utils/manager.dart';
import 'package:yyshort/common/utils/network_provider.dart';
import 'package:yyshort/firebase_messaging_service.dart';

import 'index.dart';

class SplashController extends GetxController {
  SplashController();

  final state = SplashState();

  // tap
  void handleTap(int index) {
    Get.snackbar("标题", "消息");
  }

  /// 在 widget 内存中分配后立即调用。
  @override
  void onInit() {
    super.onInit();
  }

  /// 在 onInit() 之后调用 1 帧。这是进入的理想场所
  @override
  Future<void> onReady() async {
    super.onReady();
    _initializeAndNavigate();

    await Future.wait([
      // 初始化 Firebase 消息服务
      FirebaseMessagingService().initialize(),

      // 设置环境（不同平台）
      Platform.isIOS
          ? AlivcEnvironmentManager.setGlobalEnvironment('sea')
          : FlutterAliPlayerGlobalSettings.setGlobalEnvironment(2),

      // 初始化网络服务
      Get.putAsync(() => NetworkService().init()),
    ]);
  }

  /// 初始化并跳转至主页面
  Future<void> _initializeAndNavigate() async {
    try {
      logd('开始启动初始化...');
      // 模拟初始化耗时（实际项目可替换为真实初始化逻辑：如检查登录状态、加载配置等）
      await Future.delayed(const Duration(seconds: 3));
      logd('初始化完成，跳转到主页面');
      // 替换为你的首页路由
      Get.offAndToNamed(AppRoutes.Application);
    } catch (e) {
      logd('初始化过程中发生错误: $e');
      // 出错时仍跳转至首页，避免卡死在启动页
      Get.offAndToNamed(AppRoutes.Application);
    }
  }

  /// 在 [onDelete] 方法之前调用。
  @override
  void onClose() {
    super.onClose();
  }

  /// dispose 释放内存
  @override
  void dispose() {
    super.dispose();
  }
}
